package co.edu.usbcali.rebio.presentation.backEndBeans;

import co.edu.usbcali.rebio.exceptions.*;
import co.edu.usbcali.rebio.modelo.*;
import co.edu.usbcali.rebio.modelo.dto.RebMunicipioDTO;
import co.edu.usbcali.rebio.presentation.businessDelegate.BusinessDelegatorView;
import co.edu.usbcali.rebio.utilities.*;

import com.icesoft.faces.async.render.RenderManager;
import com.icesoft.faces.async.render.Renderable;
import com.icesoft.faces.component.ext.HtmlCommandButton;
import com.icesoft.faces.component.ext.HtmlDataTable;
import com.icesoft.faces.component.ext.HtmlInputText;
import com.icesoft.faces.component.ext.HtmlOutputText;
import com.icesoft.faces.component.ext.HtmlSelectOneMenu;
import com.icesoft.faces.component.selectinputdate.SelectInputDate;
import com.icesoft.faces.context.DisposableBean;
import com.icesoft.faces.webapp.xmlhttp.FatalRenderingException;
import com.icesoft.faces.webapp.xmlhttp.PersistentFacesState;
import com.icesoft.faces.webapp.xmlhttp.RenderingException;
import com.icesoft.faces.webapp.xmlhttp.TransientRenderingException;

import java.math.BigDecimal;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.TimeZone;
import java.util.Vector;

import javax.faces.event.ValueChangeEvent;
import javax.faces.model.DataModel;
import javax.faces.model.SelectItem;


/**
*
*
* @author Zathura Code Generator http://code.google.com/p/zathura
*
*/
public class RebMunicipioView extends DataSource implements Renderable,
    DisposableBean {
    private HtmlInputText txtMunEstado;
    private HtmlInputText txtMunNombre;
    private HtmlInputText txtDetCodigo_RebDepartamento;
    private HtmlInputText txtMunCodigo;
    private HtmlOutputText txtMunId;
    private HtmlInputText txtNombreDep;
    private HtmlSelectOneMenu cmbMunDepartamento;
    private HtmlSelectOneMenu cmbMunEstado;
    private HtmlCommandButton btnSave;
    private HtmlCommandButton btnLupa;
    private HtmlCommandButton btnModify;
    private HtmlCommandButton btnDelete;
    private HtmlCommandButton btnClear;
    private HtmlDataTable tablaDep = new HtmlDataTable();
    private boolean renderDataTable;
    private boolean btnCerrarDep = false;
    private boolean flag = true;
    private HtmlCommandButton btnAceptar;
    private boolean btnErrorf = false;
    private RenderManager renderManager;
    private PersistentFacesState state = PersistentFacesState.getInstance();
    private List<RebMunicipio> rebMunicipio;
    private List<RebMunicipioDTO> rebMunicipioDTO;
    private List<SelectItem> listDepartamento = new ArrayList<SelectItem>();
    private List<SelectItem> listEstado = new ArrayList<SelectItem>();
    private List<RebDepartamento> losDep = new ArrayList<RebDepartamento>();
    private String codigoDep;

    public RebMunicipioView() {
        super("");
    }
    public String action_Cargar2() throws Exception {
    	String codigoDep2 = txtMunId.getValue().toString();
    	try {
			RebDepartamento depto = BusinessDelegatorView.getRebDepartamento(Integer.parseInt(codigoDep2));
			txtDetCodigo_RebDepartamento.setValue(depto.getDetNombre());
			codigoDep = depto.getDetCodigo().toString();
			btnCerrarDep = false;
			
		} catch (NumberFormatException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        return "";
    }
    
    public String action_abrir() {
		btnCerrarDep = true;
		return "";
	}
    public String action_cerrar() {
		btnCerrarDep = false;
		return "";
	}

    public String action_clear() {
    	cmbMunEstado.setValue(null);
    	cmbMunEstado.setDisabled(false);
        txtMunNombre.setValue(null);
        txtMunNombre.setDisabled(false);
        txtDetCodigo_RebDepartamento.setValue(null);
        txtDetCodigo_RebDepartamento.setDisabled(false);
        txtMunCodigo.setValue(null);
        txtMunCodigo.setDisabled(false);
        btnSave.setDisabled(false);
        btnLupa.setDisabled(false);
        btnDelete.setDisabled(true);
        btnModify.setDisabled(true);
        btnClear.setDisabled(false);
        codigoDep = null;

        return "";
    }
    
    public String action_consultar() {
		try {

			String nombreDep = txtNombreDep.getValue().toString().toUpperCase();
			if (nombreDep == null || nombreDep == "") {
				losDep = BusinessDelegatorView.findByCriteriaInRebDepartamento(null,null,null,true);
			} else {
				Object variables[] = {"detNombre",true,nombreDep + '%',"Like"};
				losDep = BusinessDelegatorView.findByCriteriaInRebDepartamento(variables, null, null, true);
				//System.out.println("Aqui");
			}
			flag = true;
			renderManager.getOnDemandRenderer("rebMunicipioView")
			.requestRender();

		} catch (Exception e) {
			// TODO: handle exception
		}

		return "";
	}

    public void listener_txtId(ValueChangeEvent event) {
        if ((event.getNewValue() != null) && !event.getNewValue().equals("")) {
            RebMunicipio entity = null;

            try {
                Integer munCodigo = new Integer(txtMunCodigo.getValue()
                                                            .toString());
                entity = BusinessDelegatorView.getRebMunicipio(munCodigo);
            } catch (Exception e) {
                // TODO: handle exception
            }

            if (entity == null) {
            	cmbMunEstado.setDisabled(false);
                txtMunNombre.setDisabled(false);
                txtDetCodigo_RebDepartamento.setDisabled(false);
                txtMunCodigo.setDisabled(false);
                btnSave.setDisabled(false);
                btnLupa.setDisabled(false);
                btnDelete.setDisabled(true);
                btnModify.setDisabled(true);
                btnClear.setDisabled(false);
            } else {
            	cmbMunEstado.setValue(entity.getMunEstado());
            	cmbMunEstado.setDisabled(false);
                txtMunNombre.setValue(entity.getMunNombre());
                txtMunNombre.setDisabled(false);
                txtDetCodigo_RebDepartamento.setValue(entity.getRebDepartamento()
                                                            .getDetNombre());
                txtDetCodigo_RebDepartamento.setDisabled(false);
                codigoDep = entity.getRebDepartamento().getDetCodigo().toString();
                txtMunCodigo.setValue(entity.getMunCodigo());
                txtMunCodigo.setDisabled(true);
                btnSave.setDisabled(true);
                btnLupa.setDisabled(false);
                btnDelete.setDisabled(false);
                btnModify.setDisabled(false);
                btnClear.setDisabled(false);
            }
        }
    }
    
    public String action_cargar(String munCodigo) {
    	RebMunicipio entity = null;
        if (munCodigo != null) {
            
            try {
                int codigo = Integer.parseInt(munCodigo);
                entity = BusinessDelegatorView.getRebMunicipio(codigo);
            } catch (Exception e) {
                // TODO: handle exception
            }


            if (entity == null) {
            	cmbMunEstado.setDisabled(false);
                txtMunNombre.setDisabled(false);
                txtDetCodigo_RebDepartamento.setDisabled(false);
                txtMunCodigo.setDisabled(false);
                btnSave.setDisabled(false);
                btnDelete.setDisabled(true);
                btnModify.setDisabled(true);
                btnClear.setDisabled(false);
            } else {
            	cmbMunEstado.setValue(entity.getMunEstado());
            	cmbMunEstado.setDisabled(false);
                txtMunNombre.setValue(entity.getMunNombre());
                txtMunNombre.setDisabled(false);
                txtDetCodigo_RebDepartamento.setValue(entity.getRebDepartamento()
                                                            .getDetNombre());
                txtDetCodigo_RebDepartamento.setDisabled(false);
                codigoDep = entity.getRebDepartamento().getDetCodigo().toString();
                txtMunCodigo.setValue(entity.getMunCodigo());
                txtMunCodigo.setDisabled(true);
                btnSave.setDisabled(true);
                btnLupa.setDisabled(false);
                btnDelete.setDisabled(false);
                btnModify.setDisabled(false);
                btnClear.setDisabled(false);
            }
        }
        return ("");
    }
    public String action_cerrar2(){
		btnErrorf = false;
		return "";
    }
    public String action_save() {
        try {
            
        	String departamento = "";
        	if (codigoDep != null){
        		departamento = codigoDep;
			}
            String estado = cmbMunEstado.getValue().toString();
			String ingNombre = txtMunNombre.getValue().toString();
			
			if(!Utilities.soloLetras(ingNombre)){
				throw new Exception("El Nombre del Municipio debe contener solo letras");
			}
			
			if(ingNombre.trim().equals("")){
				throw new Exception("El Nombre del Municipio es de car&#225;cter obligatorio");
			}
			
			if(departamento.trim().equals("")){
				throw new Exception("El Departamento es de car&#225;cter obligatorio, debes seleccionar alguno");
			}
			
			if (estado.trim().equals("") || estado.equals("Seleccione un valor")) {
				throw new Exception(
				"El Estado del Municipio es de car&#225;cter obligatorio, debes seleccionar alguno");
			}
			
			BusinessDelegatorView.saveRebMunicipio(null, estado, ingNombre, new Integer(departamento));
			btnErrorf = true;
			FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYSAVED);
			
			onePageDataModel = null;
			renderManager.getOnDemandRenderer("rebMunicipioView").requestRender();
			
			action_clear();
        } catch (Exception e) {
        	btnErrorf = true;
        	btnAceptar.requestFocus();
            FacesUtils.addErrorMessage(e.getMessage());
        }

        return "";
    }

    public String action_delete() {
        try {
            BusinessDelegatorView.deleteRebMunicipio(FacesUtils.checkInteger(
                    txtMunCodigo));
            FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYDELETED);
            action_clear();
        } catch (Exception e) {
            FacesUtils.addErrorMessage(e.getMessage());
        }

        return "";
    }
    
    public String action_inactivar() {
        try {
        	String est = "INACTIVO";
        	int id = Integer.parseInt(txtMunCodigo.getValue().toString());
        	String departamento = "";
        	if (codigoDep != null){
        		departamento = codigoDep;
			}
            String estado = cmbMunEstado.getValue().toString();
			String ingNombre = txtMunNombre.getValue().toString();
			
			if(!Utilities.soloLetras(ingNombre)){
				throw new Exception("El Nombre del Municipio debe contener solo letras");
			}
			
			if(ingNombre.trim().equals("")){
				throw new Exception("El Nombre del Municipio es de car&#225;cter obligatorio");
			}
			
			if(departamento.trim().equals("")){
				throw new Exception("El Departamento es de car&#225;cter obligatorio, debes seleccionar alguno");
			}
			
			if (estado.trim().equals("") || estado.equals("Seleccione un valor")) {
				throw new Exception(
				"El Estado del Municipio es de car&#225;cter obligatorio, debes seleccionar alguno");
			}
			
			BusinessDelegatorView.updateRebMunicipio(id, est, ingNombre, new Integer(departamento));
			btnErrorf = true;
			FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYSAVED);
			
			onePageDataModel = null;
			renderManager.getOnDemandRenderer("rebMunicipioView").requestRender();
			
			action_clear();
        } catch (Exception e) {
        	btnErrorf = true;
        	btnAceptar.requestFocus();
            FacesUtils.addErrorMessage(e.getMessage());
        }

        return "";
    }

    public String action_modify() {
        try {
        	
        	int id = Integer.parseInt(txtMunCodigo.getValue().toString());
        	String departamento = "";
        	if (codigoDep != null){
        		departamento = codigoDep;
			}
            String estado = cmbMunEstado.getValue().toString();
			String ingNombre = txtMunNombre.getValue().toString();
			
			if(!Utilities.soloLetras(ingNombre)){
				throw new Exception("El Nombre del Municipio debe contener solo letras");
			}
			
			if(ingNombre.trim().equals("")){
				throw new Exception("El Nombre del Municipio es de car&#225;cter obligatorio");
			}
			
			if(departamento.trim().equals("")){
				throw new Exception("El Departamento es de car&#225;cter obligatorio, debes seleccionar alguno");
			}
			
			if (estado.trim().equals("") || estado.equals("Seleccione un valor")) {
				throw new Exception(
				"El Estado del Municipio es de car&#225;cter obligatorio, debes seleccionar alguno");
			}
			
			BusinessDelegatorView.updateRebMunicipio(id, estado, ingNombre, new Integer(departamento));
			btnErrorf = true;
			FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYSAVED);
			
			onePageDataModel = null;
			renderManager.getOnDemandRenderer("rebMunicipioView").requestRender();
			
			action_clear();
        } catch (Exception e) {
        	btnErrorf = true;
        	btnAceptar.requestFocus();
            FacesUtils.addErrorMessage(e.getMessage());
        }

        return "";
    }

    public String action_modifyWitDTO(Integer munCodigo, String munEstado,
        String munNombre, Integer detCodigo_RebDepartamento)
        throws Exception {
        try {
            BusinessDelegatorView.updateRebMunicipio(munCodigo, munEstado,
                munNombre, detCodigo_RebDepartamento);
            renderManager.getOnDemandRenderer("RebMunicipioView").requestRender();
            FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYMODIFIED);
        } catch (Exception e) {
            //renderManager.getOnDemandRenderer("RebMunicipioView").requestRender();
            FacesUtils.addErrorMessage(e.getMessage());
            throw e;
        }

        return "";
    }

    public List<RebMunicipio> getRebMunicipio() {
        if (flag) {
            try {
                rebMunicipio = BusinessDelegatorView.getRebMunicipio();
                flag = false;
            } catch (Exception e) {
                flag = true;
                FacesUtils.addErrorMessage(e.getMessage());
            }
        }

        return rebMunicipio;
    }

    public boolean isFlag() {
        return flag;
    }

    public void setRebMunicipio(List<RebMunicipio> rebMunicipio) {
        this.rebMunicipio = rebMunicipio;
    }

    public boolean isRenderDataTable() {
        try {
            if (flag) {
                if (BusinessDelegatorView.findTotalNumberRebMunicipio() > 0) {
                    renderDataTable = true;
                } else {
                    renderDataTable = false;
                }
            }

            flag = false;
        } catch (Exception e) {
            renderDataTable = false;
            e.printStackTrace();
        }

        return renderDataTable;
    }

    public DataModel getData() {
        state = PersistentFacesState.getInstance();

        if (onePageDataModel == null) {
            onePageDataModel = new LocalDataModel(pageSize);
        }

        return onePageDataModel;
    }

    /**
    * This is where the Object data is retrieved from the database and
    * returned as a list of objects for display in the UI.
    */
    private DataPage<RebMunicipio> getDataPage(int startRow, int pageSize) {
        // Retrieve the total number of objects from the database.  This
        // number is required by the DataPage object so the paginator will know
        // the relative location of the page data.
        int totalNumberRebMunicipio = 0;

        try {
            totalNumberRebMunicipio = BusinessDelegatorView.findTotalNumberRebMunicipio()
                                                           .intValue();
        } catch (Exception e) {
            FacesUtils.addErrorMessage(e.getMessage());
        }

        // Calculate indices to be displayed in the ui.
        int endIndex = startRow + pageSize;

        if (endIndex > totalNumberRebMunicipio) {
            endIndex = totalNumberRebMunicipio;
        }

        try {
            rebMunicipio = BusinessDelegatorView.findPageRebMunicipio(sortColumnName,
                    sortAscending, startRow, endIndex - startRow);

            // Remove this Renderable from the existing render groups.
            //leaveRenderGroups();        			
        } catch (Exception e) {
            FacesUtils.addErrorMessage(e.getMessage());
        }

        // Add this Renderable to the new render groups.
        //joinRenderGroups();
        // Reset the dirtyData flag.
        onePageDataModel.setDirtyData(false);
        // This is required when using Hibernate.  If the SessionManager is not
        // cleared or closed objects are cached and stale objects will show up
        // in the table.
        // This way, the detached objects are reread from the database.
        // This call is not required with Hibernate, which uses a Query Hint
        // to clear the l2 cache in the DAO.
        flag = true;

        return new DataPage<RebMunicipio>(totalNumberRebMunicipio, startRow,
            rebMunicipio);
    }

    public DataModel getDataDTO() {
        state = PersistentFacesState.getInstance();

        if (onePageDataModel == null) {
            onePageDataModel = new LocalDataModelDTO(pageSize);
        }

        return onePageDataModel;
    }

    /**
    * This is where the Object data is retrieved from the database and
    * returned as a list of objects for display in the UI.
    */
    private DataPage<RebMunicipioDTO> getDataPageDTO(int startRow, int pageSize) {
        // Retrieve the total number of objects from the database.  This
        // number is required by the DataPage object so the paginator will know
        // the relative location of the page data.
        int totalNumberRebMunicipio = 0;

        try {
            totalNumberRebMunicipio = BusinessDelegatorView.findTotalNumberRebMunicipio()
                                                           .intValue();
        } catch (Exception e) {
            FacesUtils.addErrorMessage(e.getMessage());
        }

        // Calculate indices to be displayed in the ui.
        int endIndex = startRow + pageSize;

        if (endIndex > totalNumberRebMunicipio) {
            endIndex = totalNumberRebMunicipio;
        }

        try {
            rebMunicipio = BusinessDelegatorView.findPageRebMunicipio(sortColumnName,
                    sortAscending, startRow, endIndex - startRow);

            if (Utilities.validationsList(rebMunicipio)) {
                rebMunicipioDTO = new ArrayList<RebMunicipioDTO>();

                for (RebMunicipio rebMunicipioTmp : rebMunicipio) {
                    RebMunicipioDTO rebMunicipioDTO2 = new RebMunicipioDTO();
                    rebMunicipioDTO2.setMunCodigo(rebMunicipioTmp.getMunCodigo()
                                                                 .toString());
                    rebMunicipioDTO2.setMunEstado((rebMunicipioTmp.getMunEstado() != null)
                        ? rebMunicipioTmp.getMunEstado().toString() : null);
                    rebMunicipioDTO2.setMunNombre((rebMunicipioTmp.getMunNombre() != null)
                        ? rebMunicipioTmp.getMunNombre().toString() : null);
                    rebMunicipioDTO2.setDetCodigo_RebDepartamento((rebMunicipioTmp.getRebDepartamento()
                                                                                  .getDetNombre() != null)
                        ? rebMunicipioTmp.getRebDepartamento().getDetNombre()
                                         .toString() : null);
                    rebMunicipioDTO2.setRebMunicipio(rebMunicipioTmp);
                    rebMunicipioDTO2.setRebMunicipioView(this);
                    rebMunicipioDTO.add(rebMunicipioDTO2);
                }
            }

            // Remove this Renderable from the existing render groups.
            leaveRenderGroups();
        } catch (Exception e) {
            FacesUtils.addErrorMessage(e.getMessage());
        }

        // Add this Renderable to the new render groups.
        joinRenderGroups();
        // Reset the dirtyData flag.
        onePageDataModel.setDirtyData(false);
        // This is required when using Hibernate.  If the SessionManager is not
        // cleared or closed objects are cached and stale objects will show up
        // in the table.
        // This way, the detached objects are reread from the database.
        // This call is not required with Hibernate, which uses a Query Hint
        // to clear the l2 cache in the DAO.
        flag = true;

        return new DataPage<RebMunicipioDTO>(totalNumberRebMunicipio, startRow,
            rebMunicipioDTO);
    }

    protected boolean isDefaultAscending(String sortColumn) {
        return true;
    }

    /**
    * This method is called when a render call is made from the server. Render
    * calls are only made to views containing an updated record. The data is
    * marked as dirty to trigger a fetch of the updated record from the
    * database before rendering takes place.
    */
    public PersistentFacesState getState() {
        onePageDataModel.setDirtyData();

        return state;
    }

    /**
    * This method is called from faces-config.xml with each new session.
    */
    public void setRenderManager(RenderManager renderManager) {
        this.renderManager = renderManager;
    }

    public void renderingException(RenderingException arg0) {
        if (arg0 instanceof TransientRenderingException) {
        } else if (arg0 instanceof FatalRenderingException) {
            // Remove from existing Customer render groups.
            leaveRenderGroups();
        }
    }

    /**
    * Remove this Renderable from existing uiCustomerBeans render groups.
    * OnDemandRenderers are named/created using the underlying Customer Number.
    */
    private void leaveRenderGroups() {
        if (Utilities.validationsList(rebMunicipioDTO)) {
            for (RebMunicipioDTO rebMunicipioTmp : rebMunicipioDTO) {
                renderManager.getOnDemandRenderer("RebMunicipioView")
                             .remove(this);
            }
        }
    }

    /**
    * Add this Renderable to the new uiCustomerBeans render groups.
    * OnDemandRenderers are named/created using the underlying Customer Number.
    */
    private void joinRenderGroups() {
        if (Utilities.validationsList(rebMunicipioDTO)) {
            for (RebMunicipioDTO rebMunicipioTmp : rebMunicipioDTO) {
                renderManager.getOnDemandRenderer("RebMunicipioView").add(this);
            }
        }
    }

    public void dispose() throws Exception {
    }

    public RenderManager getRenderManager() {
        return renderManager;
    }

    public void setState(PersistentFacesState state) {
        this.state = state;
    }

    public HtmlInputText getTxtMunEstado() {
        return txtMunEstado;
    }

    public void setTxtMunEstado(HtmlInputText txtMunEstado) {
        this.txtMunEstado = txtMunEstado;
    }

    public HtmlInputText getTxtMunNombre() {
        return txtMunNombre;
    }

    public void setTxtMunNombre(HtmlInputText txtMunNombre) {
        this.txtMunNombre = txtMunNombre;
    }

    public HtmlInputText getTxtDetCodigo_RebDepartamento() {
        return txtDetCodigo_RebDepartamento;
    }

    public void setTxtDetCodigo_RebDepartamento(
        HtmlInputText txtDetCodigo_RebDepartamento) {
        this.txtDetCodigo_RebDepartamento = txtDetCodigo_RebDepartamento;
    }

    public HtmlInputText getTxtMunCodigo() {
        return txtMunCodigo;
    }

    public void setTxtMunCodigo(HtmlInputText txtMunCodigo) {
        this.txtMunCodigo = txtMunCodigo;
    }
    
    public HtmlOutputText getTxtMunId() {
		return txtMunId;
	}

	public void setTxtMunId(HtmlOutputText txtMunId) {
		this.txtMunId = txtMunId;
	}

	public HtmlInputText getTxtNombreDep() {
		return txtNombreDep;
	}

	public void setTxtNombreDep(HtmlInputText txtNombreDep) {
		this.txtNombreDep = txtNombreDep;
	}

	public HtmlSelectOneMenu getCmbMunDepartamento() {
    	
    	try {
    		List<RebDepartamento> list = BusinessDelegatorView.findByCriteriaInRebDepartamento(null, null, null, true);
    		listDepartamento.clear();
    		listDepartamento.add(new SelectItem(0,"Seleccione un valor"));
    		
    		for (RebDepartamento departamento : list) {
    			listDepartamento.add(new SelectItem(departamento.getDetCodigo(), departamento.getDetNombre()));
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
		return cmbMunDepartamento;
	}

	public void setCmbMunDepartamento(HtmlSelectOneMenu cmbMunDepartamento) {
		this.cmbMunDepartamento = cmbMunDepartamento;
	}

	public HtmlSelectOneMenu getCmbMunEstado() {
		
		try {
			 listEstado.clear();
			 listEstado.add(new SelectItem("Seleccione un valor"));
			 listEstado.add(new SelectItem("ACTIVO"));
			 listEstado.add(new SelectItem("INACTIVO"));
		 } catch (Exception e) {
			 // TODO: handle exception
		 }
		return cmbMunEstado;
	}

	public void setCmbMunEstado(HtmlSelectOneMenu cmbMunEstado) {
		this.cmbMunEstado = cmbMunEstado;
	}

	public List<SelectItem> getListDepartamento() {
		return listDepartamento;
	}

	public void setListDepartamento(List<SelectItem> listDepartamento) {
		this.listDepartamento = listDepartamento;
	}

	public List<SelectItem> getListEstado() {
		return listEstado;
	}

	public void setListEstado(List<SelectItem> listEstado) {
		this.listEstado = listEstado;
	}

	public HtmlCommandButton getBtnSave() {
        return btnSave;
    }

    public void setBtnSave(HtmlCommandButton btnSave) {
        this.btnSave = btnSave;
    }

    public HtmlCommandButton getBtnModify() {
        return btnModify;
    }

    public void setBtnModify(HtmlCommandButton btnModify) {
        this.btnModify = btnModify;
    }

    public HtmlCommandButton getBtnDelete() {
        return btnDelete;
    }

    public void setBtnDelete(HtmlCommandButton btnDelete) {
        this.btnDelete = btnDelete;
    }

    public HtmlCommandButton getBtnClear() {
        return btnClear;
    }

    public void setBtnClear(HtmlCommandButton btnClear) {
        this.btnClear = btnClear;
    }

    public HtmlCommandButton getBtnLupa() {
		return btnLupa;
	}

	public void setBtnLupa(HtmlCommandButton btnLupa) {
		this.btnLupa = btnLupa;
	}

	public HtmlDataTable getTablaDep() {
		return tablaDep;
	}

	public void setTablaDep(HtmlDataTable tablaDep) {
		this.tablaDep = tablaDep;
	}

	public boolean isBtnCerrarDep() {
		return btnCerrarDep;
	}

	public void setBtnCerrarDep(boolean btnCerrarDep) {
		this.btnCerrarDep = btnCerrarDep;
	}

	public void setRenderDataTable(boolean renderDataTable) {
        this.renderDataTable = renderDataTable;
    }

    public void setFlag(boolean flag) {
        this.flag = flag;
    }
    
    
    public HtmlCommandButton getBtnAceptar() {
		return btnAceptar;
	}
	public void setBtnAceptar(HtmlCommandButton btnAceptar) {
		this.btnAceptar = btnAceptar;
	}
	public boolean isBtnErrorf() {
		return btnErrorf;
	}

	public void setBtnErrorf(boolean btnErrorf) {
		this.btnErrorf = btnErrorf;
	}

	public List<RebMunicipioDTO> getRebMunicipioDTO() {
        return rebMunicipioDTO;
    }

    public void setRebMunicipioDTO(List<RebMunicipioDTO> rebMunicipioDTO) {
        this.rebMunicipioDTO = rebMunicipioDTO;
    }

    public List<RebDepartamento> getLosDep() {
		return losDep;
	}

	public void setLosDep(List<RebDepartamento> losDep) {
		this.losDep = losDep;
	}

	public TimeZone getTimeZone() {
        return java.util.TimeZone.getDefault();
    }

    /**
    * A special type of JSF DataModel to allow a datatable and datapaginator
    * to page through a large set of data without having to hold the entire
    * set of data in memory at once.
    * Any time a managed bean wants to avoid holding an entire dataset,
    * the managed bean declares this inner class which extends PagedListDataModel
    * and implements the fetchData method. fetchData is called
    * as needed when the table requires data that isn't available in the
    * current data page held by this object.
    * This requires the managed bean (and in general the business
    * method that the managed bean uses) to provide the data wrapped in
    * a DataPage object that provides info on the full size of the dataset.
    */
    private class LocalDataModel extends PagedListDataModel {
        public LocalDataModel(int pageSize) {
            super(pageSize);
        }

        public DataPage<RebMunicipio> fetchPage(int startRow, int pageSize) {
            // call enclosing managed bean method to fetch the data
            return getDataPage(startRow, pageSize);
        }
    }

    private class LocalDataModelDTO extends PagedListDataModel {
        public LocalDataModelDTO(int pageSize) {
            super(pageSize);
        }

        public DataPage<RebMunicipioDTO> fetchPage(int startRow, int pageSize) {
            // call enclosing managed bean method to fetch the data
            return getDataPageDTO(startRow, pageSize);
        }
    }
}
